import { logInfo } from '@/utils/log.js'
// import store from '@/store/index.js'
import { publishMsg } from "./index.js";
import {SCADA_MSG} from '@/utils/Menu/menu.js'
const isObject = obj => obj === Object(obj);

// function checkDataListIsExist(dataId) {
//   if (store.state.timeLineChart.hasOwnProperty(dataId) || store.state.timeBarChart.hasOwnProperty(dataId)) {
//     return true;
//   } else {
//     return false;
//   }
// }

export function onMsg(topic, msg) {
  const webMsgType = msg.webMsgType
  const funCode = msg.funCode
  switch (webMsgType) {
    case SCADA_MSG.scada_login:
      {
        if (funCode == 0 && msg.retCode == 0) {
          let sendMsg = { webMsgType: SCADA_MSG.scada_param_dashboard, funCode: 0 }
          publishMsg(sendMsg)
        }
      }
      break;
    case SCADA_MSG.scada_param_gateway:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'gw', data: msg.data }
              store.commit('initGateway', message)
            }
            break
          case 6:
            {
              let message = { type: 'gw', data: msg.data }
              store.commit('updateGateway', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_terminal:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'te', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 2:
            {
              let message = { type: 'te', data: msg.data }
              store.commit('updateTerminal', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yx:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'yx', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 2:
            {
              let message = { type: 'yx', data: msg.data }
              store.commit('updateData', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yc:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'yc', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 2:
            {
              let message = { type: 'yc', data: msg.data }
              store.commit('updateData', message)

              // let dataList = msg.data;
              // for (let i = 0; i < dataList.length; i++) {
              //   let data = dataList[i];
              //   let dataId = data.id;
              //   let value = data.value;
              //   let datetime = data.update_time;
              //   if (checkDataListIsExist(dataId)) {
              //     let obj = {};
              //     obj.id = dataId;
              //     obj.data = {};
              //     obj.data.value = [];
              //     obj.data.value.push(datetime);
              //     obj.data.value.push(value);
              //     store.commit("addTimeLineChartData", obj);
              //     store.commit("addTimeBarChartData", obj);
              //   }
              // }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_ym:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'ym', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 2:
            {
              let message = { type: 'ym', data: msg.data }
              store.commit('updateData', message)

              // let dataList = msg.data;
              // for (let i = 0; i < dataList.length; i++) {
              //   let data = dataList[i];
              //   let dataId = data.id;
              //   let value = data.value;
              //   let datetime = data.update_time;
              //   if (checkDataListIsExist(dataId)) {
              //     let obj = {};
              //     obj.id = dataId;
              //     obj.data = {};
              //     obj.data.value = [];
              //     obj.data.value.push(datetime);
              //     obj.data.value.push(value);
              //     store.commit("addTimeLineChartData", obj);
              //     store.commit("addTimeBarChartData", obj);
              //   }
              // }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yk:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'yk', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 3:
            {
              let message = { type: 'yk', data: [msg.data] }
              store.commit('updateData', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yt:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'yt', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 3:
            {
              let message = { type: 'yt', data: [msg.data] }
              store.commit('updateData', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_task:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'task', data: msg.data }
              store.commit('initData', message)
            }
            break
          case 4:
            {
              let message = { type: 'task', data: [msg.data] }
              store.commit('updateData', message)

              // let data = msg.data;
              // let dataId = data.id;
              // let value = data.value;
              // let datetime = data.update_time;
              // if (checkDataListIsExist(dataId)) {
              //   let obj = {};
              //   obj.id = dataId;
              //   obj.data = {};
              //   obj.data.value = [];
              //   obj.data.value.push(datetime);
              //   obj.data.value.push(value);
              //   store.commit("addTimeLineChartData", obj);
              //   store.commit("addTimeBarChartData", obj);
              // }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_graph:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'graph', data: msg.data }
              store.commit('initLe5LeData', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_report:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'report', data: msg.data }
              store.commit('initData', message)
            }
            break
        }
      }
      break

    case SCADA_MSG.scada_param_time_report:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'timeReport', data: msg.data }
              store.commit('initData', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_system:
      {
        switch (funCode) {
          case 0:
            {
              let size = msg.data.length;
              for (let i = 0; i < size; i++) {
                switch (msg.data[i].id) {
                  case 'dashboard_title1':
                    let projTitle1 = msg.data[i]
                    store.commit('setTitle', projTitle1)
                    break;
                  case 'dashboard_title2':
                    let projTitle2 = msg.data[i]
                    store.commit('setTitle', projTitle2)
                    break;
                  case 'dashboard_title3':
                    let projTitle3 = msg.data[i]
                    store.commit('setTitle', projTitle3)
                    break;
                  case 'dashboard_title4':
                    let projTitle4 = msg.data[i]
                    store.commit('setTitle', projTitle4)
                    break;
                  default:
                    break;
                }
                sessionStorage.setItem(msg.data[i].id, msg.data[i].value);
              }
            }
            break;
          default:
            break;
        }
      }
      break;
    case SCADA_MSG.scada_param_alarm:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'alarm', data: msg.data }
              store.commit('refreshAlarm', message)
            }
            break
          case 2:
            {
              let message = { type: 'alarm', data: msg.data }
              store.commit('addNewAlarm', message)
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_dashboard:
      {
        switch (funCode) {
          case 0:
            {
              // logInfo("已经获取到菜单配置文件")
              store.commit('setMenu', msg.data)
            }
            break
        }
      }
      break
  }
}

export function onMsgExt(topic, msg, keys, retVal) {
  const webMsgType = msg.webMsgType
  const funCode = msg.funCode
  const data = msg.data;

  switch (webMsgType) {
    case SCADA_MSG.scada_param_gateway:
      {
        switch (funCode) {
          case 0:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['gw_sn']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
          case 6:
            {
              for (let i = 0; i < keys.length; i++) {
                if (keys[i] == data['gw_sn']) {
                  retVal[keys[i]] = data;
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_terminal:
      {
        switch (funCode) {
          case 0:
          case 2:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yx:
      {
        switch (funCode) {
          case 0:
          case 2:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yc:
      {
        switch (funCode) {
          case 0:
          case 2:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_ym:
      {
        switch (funCode) {
          case 0:
          case 2:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yk:
      {
        switch (funCode) {
          case 0:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
          case 3:
            {
              for (let i = 0; i < keys.length; i++) {
                if (keys[i] == data['id']) {
                  retVal[keys[i]] = data;
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_yt:
      {
        switch (funCode) {
          case 0:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
          case 3:
            {
              for (let i = 0; i < keys.length; i++) {
                if (keys[i] == data['id']) {
                  retVal[keys[i]] = data;
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_task:
      {
        switch (funCode) {
          case 0:
            {
              for (let i = 0; i < keys.length; i++) {
                for (let j = 0; j < data.length; j++) {
                  if (keys[i] == data[j]['id']) {
                    retVal[keys[i]] = data[j];
                  }
                }
              }
            }
            break
          case 4:
            {
              for (let i = 0; i < keys.length; i++) {
                if (keys[i] == data['id']) {
                  retVal[keys[i]] = data;
                }
              }
            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_report:
      {
        switch (funCode) {
          case 0:
            {

            }
            break
        }
      }
      break
    case SCADA_MSG.scada_param_alarm:
      {
        switch (funCode) {
          case 0:
            {
              let message = { type: 'alarm', data: msg.data }
              store.commit('refreshAlarm', message)
            }
            break
          case 2:
            {
              let message = { type: 'alarm', data: msg.data }
              store.commit('addNewAlarm', message)
            }
            break
        }
      }
      break
  }
}

export function getDataIdList() {

  if (JSON.stringify(store.state.page) == "{}") {
    let msg = {
      webMsgType: SCADA_MSG.scada_param_dashboard,
      funCode: 0,
      withPageConfig: true,
    };
    publishMsg(msg);
  }

  if (store.state.dataSet.gw.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_gateway, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.te.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_terminal, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.yx.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_yx, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.yc.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_yc, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.ym.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_ym, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.yk.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_yk, funCode: 0 };
    publishMsg(msg);
  }

  if (store.state.dataSet.yt.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_yt, funCode: 0 };
    publishMsg(msg);
  }
  if (store.state.dataSet.task.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_task, funCode: 0 };
    publishMsg(msg);
  }

  // if (store.state.dataSet.graph.length == 0) {
  //   let msg = { webMsgType: SCADA_MSG.scada_param_graph, funCode: 0, fullData: true };
  //   publishMsg(msg);
  // }
  if (store.state.dataSet.report.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_report, funCode: 0 };
    publishMsg(msg);
  }
  if (store.state.dataSet.timeReport.length == 0) {
    let msg = { webMsgType: SCADA_MSG.scada_param_time_report, funCode: 0 };
    publishMsg(msg);
  }


  // if (store.state.dataSet.graph.length == 0) {
  //   let msg = { webMsgType: SCADA_MSG.scada_param_graph, funCode: 0, fullData: true };
  //   publishMsg(msg);
  // }


  logInfo("getDataIdList finish");
}
